package edu.cuit.avatar.array;

import java.util.Arrays;

public class ArrayCopy {
    public static void main(String[] args) {
        int[] list1 = {10, 20, 30, 40}; //int[] list1 = new int[]{10, 20, 30, 40}
        int[] list2 = list1;

        System.out.println(list1); //toString()
        System.out.println(list2); //toString()
        /*
            == 比较运算符
                基本数据类型: 比较的是基本数据类型的值
                引用数据类型: 比较的是是否为同一个引用
         */
        System.out.println(list1 == list2); //true
        list2[0] = 100;
        System.out.println(list1[0]); //100

        System.out.println("====================================");
        int[] array1 = {10, 20, 30, 40, 50};
        int[] array2 = new int[array1.length];


        //数组复制方式一
        for (int i = 0; i < array1.length; i++) {
            array2[i] = array1[i];
        }

        System.out.println(array1 == array2);// false

        //数组复制方式二:使用System类中的静态方法arraycopy复制源数组中的全部元素或者部分元素

        int[] array3 = new int[array1.length];
        //参数srcPos和tarPos分别表示在源数组sourceArray和目标数组targetArray中的起始位置，从sourceArray复制到targetArray中的元素个数由参数length指定
        System.arraycopy(array1, 0, array3, 0, array1.length);
        System.out.println(array1 == array3); //false
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
        System.out.println(Arrays.toString(array3));

        //数组复制方式三: 克隆
        int[] array4 = array1.clone();
        System.out.println(array1 == array4);//false
        System.out.println(Arrays.toString(array4));
    }
}
